package com.yh.patterns.TemplateMethod.job;

/**
 * @Author:云尚
 * @Description:抽象类（定义模板方法和基本方法）
 * 某银行软件的利息计算流程如下：系统根据账户查询用户信息；根据用户信息判断用户类型；
 * 不同类型的用户使用不同的利息计算方式计算利息
 * （如活期账户CurrentAccount和定期账户SavingAccount具有不同的利息计算方式）；
 * 显示利息。现使用模板方法模式来设计该系统，绘制类图并编程实现。
 */
public abstract class AbstractAccount {
    //银行利息计算流程步骤
    public final void OperateProcess(){
        //1.第一步系统根据账户信息查询用户信息
        this.selectUserInfo();
        //2.根据用户信息判断用户类型
        this.determineUserType();
        //3.计算利息（不同的用户使用不同的计算利息的方式）
        this.CalculateInterest();
        //4.显示利息
        this.showInterest();
    }

    //1.第一步系统根据账户信息查询用户信息
    public void selectUserInfo(){
        System.out.println("查询用户信息！");
    }
    //2.根据用户信息判断用户类型
    public void determineUserType(){
        System.out.println("判断用户类型");
    }
    //3.计算利息（不同的用户使用不同的计算利息的方式）
    public abstract void CalculateInterest();
    //4.显示利息
    public void showInterest(){
        System.out.println("显示利息");
    }
}
